<?php

namespace JsonLowCode\UI;

use JsonLowCode\Schema;
use JsonLowCode\Traits\Props\HasAlign;
use JsonLowCode\Traits\Props\HasInline;
use JsonLowCode\Traits\Props\HasJustify;
use JsonLowCode\Traits\Props\HasSize;
use JsonLowCode\Traits\Props\HasVertical;

/**
 * Space组件
 * @method static Space make(mixed $children = null) Space组件
 */
class Space extends Schema
{
    protected string $componentName = "NSpace";

    use HasInline, HasAlign, HasJustify, HasSize, HasVertical;

    /**
     * @param mixed|null $children
     */
    public function __construct(mixed $children = null)
    {
        parent::__construct();
        $this->componentName('NSpace');
        $this->children($children);
    }

    /**
     * 设置组件大小尺寸
     * @param string|int|array $size 'small' | 'medium' | 'large' | number | [number,number]
     * @return $this
     */
    public function size(string|int|array $size = 'small' | 'medium' | 'large'): static
    {
        return $this->prop('size',$size);
    }

    /**
     * 是否存在包裹子元素的容器，false 值只会对支持 flex gap 的浏览器生效
     * @param bool|string $bool
     * @return $this
     */
    public function wrapItem(bool|string $bool = true): static
    {
        return $this->prop('wrap-item', $bool);
    }

    /**
     * 是否超出换行
     * @param bool|string $bool
     * @return $this
     */
    public function wrap(bool|string $bool = true): static
    {
        return $this->prop('wrap', $bool);
    }

    /**
     * 节点样式，当 wrap-item 为 true 时有效
     * @param string|array $itemStyle
     * @return $this
     */
    public function itemStyle(string|array $itemStyle): static
    {
        return $this->prop("item-style",$itemStyle);
    }

}
